package com.detector.overflow;

import com.detector.overflow.config.DetectorConfig;
import java.lang.instrument.Instrumentation;

/**
 * 整数溢出检测Agent入口
 * 
 * 使用方法：
 * java -javaagent:overflow-detector-1.0.0.jar -jar your-app.jar
 * 
 * @author detector
 */
public class OverflowAgent {
    
    public static void premain(String agentArgs, Instrumentation inst) {
        String separator = repeatString("=", 60);
        System.out.println("\n" + separator);
        System.out.println("  Java整数溢出检测工具 v1.0.0");
        System.out.println("  Overflow Detector Agent Started");
        System.out.println(separator);
        
        // 打印配置信息
        DetectorConfig.getInstance().printConfig();
        
        // 注册转换器
        inst.addTransformer(new OverflowTransformer(), true);
        
        System.out.println("✅ 监控已启动，开始检测整数溢出风险...\n");
    }
    
    public static void agentmain(String agentArgs, Instrumentation inst) {
        premain(agentArgs, inst);
    }
    
    /**
     * 重复字符串指定次数（JDK 8兼容实现）
     */
    private static String repeatString(String str, int count) {
        StringBuilder sb = new StringBuilder(str.length() * count);
        for (int i = 0; i < count; i++) {
            sb.append(str);
        }
        return sb.toString();
    }
}
